/**
 * @filename:DirectoryInfoService 2025-04-27
 * @project starhub-schema  V1.0
 */
package com.starhub.engine.directory.service;

import com.starhub.common.sys.user.LoginUser;
import com.starhub.engine.directory.entity.DirectoryInfo;
import com.starhub.engine.directory.request.DirectoryShareBsRequest;
import com.starhub.engine.directory.result.*;

import java.util.Map;
/**
 * @Description:(附件目录管理服务层)
 * @version: V1.0
 * @author: 孙赛赛-sss
 * 
 */
public interface DirectoryInfoService {

    /**
    * 新增
    * @param user
    * @param directory
    * @return
    */
    DirectoryDealResult addDirectoryInfo(LoginUser user, DirectoryInfo directory);

    /**
    * 更新
    * @param user
    * @param directory
    * @return
    */
    DirectoryDealResult updateDirectoryInfo(LoginUser user, DirectoryInfo directory);

    /**
    * 基本信息获取
    * @param user
    * @param id
    * @return
    */
    DirectoryDealResult getDirectoryInfoInfo(LoginUser user, Long id);

   /**
   * 根据id删除，此方法为真实删除
   * @param user
   * @param ids
   */
   DirectoryDealResult deleteDirectoryInfoRecord(LoginUser user, String ids);

    /**
    * 列表查询
    * @param user
    * @param params
    */
    DirectoryDealListResult getDirectoryInfoList(LoginUser user, Map<String , Object> params);

    /**
     *
     * @param user
     * @param params
     * @return
     */
    DirectoryDealListResult getDirectoryInfoNormalList(LoginUser user, Map<String , Object> params);

    /**
     *
     * @param user
     * @param params
     * @return
     */
    DirectoryDealTreeResult getDirectoryTreeSeletList(LoginUser user, Map<String , Object> params);

    /**
     * 获取用户已获得的目录权限
     * @param directoryId
     * @param user
     * @return
     */
    DirectoryShareDealListResult getDirectoryShareList(Long directoryId,LoginUser user);

    /**
     * 获取文件夹已有的用户权限
     * @param directoryId
     * @return
     */
    DirectoryShareDealListResult getDirectoryShareList(Long directoryId);

    /**
     * 赋权
     * @param directoryShareBsRequest
     * @param user
     */
    DirectoryShareDealResult grantDirectoryUserShare(DirectoryShareBsRequest directoryShareBsRequest, LoginUser user);

    DirectoryShareDealResult delDirectoryUserShare(DirectoryShareBsRequest directoryShareBsRequest, LoginUser user);
 }
